const http = require('../../../utils/https.js');

Page({
    data: {
        flashSaleInfo: {}, // 商品 + 活动整体信息
        productImages: [], // 轮播图
        productDetail: '', // 富文本
        time: 0, // 倒计时总毫秒数
        timeData: {
            hours: 0,
            minutes: 0,
            seconds: 0
        },
        appraiseNum: 0,
        appraise: [],
       groupList: [], // 所有拼团数据
           displayGroupList: [], // 用于展示的前3条拼团数据
        showGroupModal: false,// 控制弹窗显示
            cartCount: 0 // 👈 新增：购物车数量角标
    },

    onLoad(options) {
        console.log('商品id', options.id);
        // 获取商品详情
        this.getFlashSaleDetail(options.id);
        // 获取评论
        this.getComments(options.id);
        // 获取活动信息（限时抢购时间等）
        this.getActivityInfo(options.id);
        // 获取拼团列表
         this.getGroupList(options.id);
       // this.getGroupList(this.data.flashSaleInfo.id); // 下拉刷新时
    },
/**
 * 获取商品详情
 */
getFlashSaleDetail(productId) {
    wx.showLoading({
        title: '加载中...'
    });
    http.GET(
        '/product/productinfo/list', {
            id: productId
        },
        (res) => {
            wx.hideLoading();
            if (res.code === 200 && res.rows && res.rows.length > 0) {
                const data = res.rows[0];

                // 处理商品轮播图
                let images = [];
                if (data.productImages && data.productImages.length > 0) {
                    data.productImages.forEach(imgObj => {
                        if (imgObj.url) {
                            images = images.concat(imgObj.url.split(',').map(u => u.trim()));
                        }
                    });
                } else {
                    images = [data.mainImage, data.image].filter(Boolean);
                }

                // 处理富文本详情
                let detail = data.productDetail?.description || '<p>暂无详细介绍</p>';

                // ✅ 给所有 img 标签加样式，保证图片自适应宽度
                detail = detail.replace(
                    /<img/gi,
                    '<img style="max-width:100%;height:auto;display:block;"'
                );

                this.setData({
                    flashSaleInfo: data,
                    productImages: images,
                    productDetail: detail
                });
            } else {
                wx.showToast({
                    title: '获取商品信息失败',
                    icon: 'none'
                });
            }
        },
        (err) => {
            wx.hideLoading();
            wx.showToast({
                title: '网络请求失败',
                icon: 'none'
            });
            console.error('获取商品详情失败:', err);
        }
    );
},


    /**
     * 获取活动信息（用于倒计时 + 活动价 + 活动库存）
     */
    getActivityInfo(productId) {
        http.GET('/activity/activitygroup/list', {
            productId
        }, (res) => {
            if (res.code === 200) {
                const act = res.rows[0];

                // 处理时间
                let endTimeStr = act.endTime;
                console.log(endTimeStr)
                if (endTimeStr.length === 16) endTimeStr += ':00'; // 补秒
                endTimeStr = endTimeStr.replace(/-/g, '/');
                const endTime = new Date(endTimeStr).getTime();
                const now = Date.now();
                const remainingTime = Math.max(endTime - now, 0);

                // 更新数据
                this.setData({
                    flashSaleInfo: {
                        ...this.data.flashSaleInfo,
                        flashPrice: act.flashPrice,
                        stock: act.stock,
                        startTime: act.startTime,
                        endTime: act.endTime,
                        activityName: act.activityName,
                        id: act.id,
                        minSize:act.minSize
                    },
                    time: remainingTime,
                    timeData: this.getTimeData(remainingTime) // 先初始化一次
                });
            }
        });
    },

 /**
  * 获取拼团列表
  */
 getGroupList(groupActivityId) {
     http.GET('/activity/groupproduct/list', {
         pageNum: 1,
         pageSize: 10,
         groupActivityId
     }, (res) => {
         if (res.code === 200 && res.rows && res.rows.length > 0) {
             const groupList = res.rows.map(group => {
                 // 模拟头像（接口没返回用户头像，这里用固定的）
                 const avatars = [
                     'https://img.yzcdn.cn/vant/cat.jpeg',
                     'https://img.yzcdn.cn/vant/dog.jpeg',
                     'https://img.yzcdn.cn/vant/rabbit.jpeg'
                 ];

                 const joined = group.count || 0; // 已参团人数
                 const total = group.size || group.minSize || 1; // 成团所需人数
                 const name = `${total}人成团`;

                 return {
                     id: group.id,
                     avatars,
                     name,
                     joined,
                     total,
                     progress: total > 0 ? Math.round((joined / total) * 100) : 0,
                     startTime: group.startTime,
                     endTime: group.endTime,
                     groupPrice: group.groupPrice,
                     stock: group.stock
                 };
             });

             // 只展示前3条
             const displayGroupList = groupList.slice(0, 3);

             this.setData({
                 groupList,
                 displayGroupList
             });
         } else {
             console.log('暂无拼团数据');
             this.setData({
                 groupList: [],
                 displayGroupList: []
             });
         }
     }, (err) => {
         console.error('获取拼团列表失败:', err);
         this.setData({
             groupList: [],
             displayGroupList: []
         });
     });
 },


       /**
        * 显示全部拼团弹窗
        */
       showAllGroups() {
           this.setData({
               showGroupModal: true
           });
       },

       /**
        * 关闭弹窗（如果需要单独的关闭按钮）
        */
       closeGroupModal() {
           this.setData({
               showGroupModal: false
           });
       },

   

    /**
     * 获取评论
     */
    getComments(productId) {
        http.GET(
            '/comment/comments/list', {
                productId
            },
            (res) => {
                if (res.code === 200 && res.rows) {
                    const limitedRows = res.rows.slice(0, 3);
                    const comments = limitedRows.map(comment => {
                        let imgUrls = [];
                        if (comment.imageUrls) {
                            imgUrls = comment.imageUrls.split(',').map(url => url.trim());
                        } else if (comment.imageUrlList && comment.imageUrlList.length > 0) {
                            imgUrls = comment.imageUrlList;
                        }
                        return {
                            avatarUrl: comment.avatar || 'https://xxx/default.png',
                            name: comment.userName || '匿名用户',
                            time: comment.createdAt || '',
                            score: comment.rating || 5,
                            text: comment.content || '',
                            imgUrls
                        };
                    });

                    this.setData({
                        appraise: comments,
                        appraiseNum: res.rows.length
                    });
                } else {
                    wx.showToast({
                        title: '获取评论失败',
                        icon: 'none'
                    });
                }
            },
            (err) => {
                wx.showToast({
                    title: '评论加载失败',
                    icon: 'none'
                });
                console.error('获取评论失败:', err);
            }
        );
    },

    // 辅助函数：格式化时间
    getTimeData(ms) {
        let totalSeconds = Math.floor(ms / 1000);
        const hours = String(Math.floor(totalSeconds / 3600)).padStart(2, '0');
        totalSeconds %= 3600;
        const minutes = String(Math.floor(totalSeconds / 60)).padStart(2, '0');
        const seconds = String(totalSeconds % 60).padStart(2, '0');
        return {
            hours,
            minutes,
            seconds
        };
    },

    // 倒计时回调
    onChange(e) {
        this.setData({
            timeData: e.detail
        });
    },

    // 查看全部评价
    toviews(e) {
        const productId = this.data.flashSaleInfo.id;
        wx.navigateTo({
            url: `/index/pages/mzhGoodsReviews/mzhGoodsReviews?productId=${productId}`,
        });
    },

    // 去拼单
  // 去拼单
  goToGroupBuy(e) {
      const groupId = e.currentTarget.dataset.id; // groupProductId
      const productId = this.data.flashSaleInfo.id;

      // 从缓存中获取用户信息
      const userInfo = wx.getStorageSync('userInfo');
      if (!userInfo || !userInfo.userId) {
          wx.showToast({
              title: '请先登录',
              icon: 'none'
          });
          return;
      }

      const userId = userInfo.userId;

      // 调用接口
      http.POST('/activity/groupdetail', {
          userId: userId,
          groupProductId: groupId
      }, (res) => {
          if (res.code === 200) {
              wx.showToast({
                  title: '加入拼团成功',
                  icon: 'success'
              });

              // 跳转到拼团详情页（这里根据你的实际路径修改）
            //   wx.navigateTo({
            //       url: `/index/pages/groupDetail/groupDetail?groupId=${groupId}&productId=${productId}`
            //   });
                this.getGroupList(this.data.flashSaleInfo.id);
          } else {
              wx.showToast({
                  title: res.msg || '加入拼团失败',
                  icon: 'none'
              });
          }
      }, (err) => {
          console.error('加入拼团失败:', err);
          wx.showToast({
              title: '网络错误',
              icon: 'none'
          });
      });
  },


    onPullDownRefresh() {
        const id = this.data.flashSaleInfo.id;
        if (id) {
            this.getFlashSaleDetail(id);
            this.getComments(id);
            this.getActivityInfo(id);
            this.getGroupList(id); // 下拉刷新时同步更新拼团列表
        }
        wx.stopPullDownRefresh();
    },
     onClickIcon() {
         wx.switchTab({
             url: '/pages/shopCart/shopCart',
         })
    },
       onShow() {
           const userInfo = wx.getStorageSync('userInfo');
           if (userInfo && userInfo.userId) {
               http.GET(`/order/items/user/${userInfo.userId}`, {}, (res) => {
                   if (res.code === 200) {
                       let total = 0;
                       res.data.forEach(item => {
                           total += item.quantity;
                       });
                       this.setData({
                           cartCount: total
                       });
                   }
               });
           }
       },
 onClickgroup() {
     const {
         flashSaleInfo
     } = this.data;

     if (!flashSaleInfo.id || !flashSaleInfo.minSize) {
         wx.showToast({
             title: '拼团信息不完整',
             icon: 'none'
         });
         return;
     }

     // 获取用户信息
     const userInfo = wx.getStorageSync('userInfo');
     if (!userInfo || !userInfo.userId) {
         wx.showToast({
             title: '请先登录',
             icon: 'none'
         });
         return;
     }
     const userId = userInfo.userId;

     wx.showLoading({
         title: '正在发起拼团...'
     });

     // 第一步：创建拼团
     http.POST('/activity/groupproduct', {
         groupActivityId: flashSaleInfo.id,
         size: flashSaleInfo.minSize
     }, (res) => {
         wx.hideLoading();
         if (res.code === 200) {
             wx.showToast({
                 title: '拼团创建成功',
                 icon: 'success'
             });

             // 第二步：刷新拼团列表
             this.getGroupList(flashSaleInfo.id);

             // 等待 500ms，让列表更新（确保最新拼团在 groupList 中）
             setTimeout(() => {
               const latestGroup = this.data.groupList[this.data.groupList.length - 1];

                 if (!latestGroup) {
                     wx.showToast({
                         title: '获取拼团信息失败',
                         icon: 'none'
                     });
                     return;
                 }

                 const groupId = latestGroup.id;

                 // 第三步：加入拼团
                 http.POST('/activity/groupdetail', {
                     userId: userId,
                     groupProductId: groupId
                 }, (joinRes) => {
                     if (joinRes.code === 200) {
                         wx.showToast({
                             title: '加入拼团成功',
                             icon: 'success'
                         });

                         // 刷新拼团列表
                         this.getGroupList(flashSaleInfo.id);
                     } else {
                         wx.showToast({
                             title: joinRes.msg || '加入拼团失败',
                             icon: 'none'
                         });
                     }
                 }, (err) => {
                     console.error('加入拼团失败:', err);
                     wx.showToast({
                         title: '网络错误',
                         icon: 'none'
                     });
                 });
             }, 500);

         } else {
             wx.showToast({
                 title: res.msg || '发起拼团失败',
                 icon: 'none'
             });
         }
     }, (err) => {
         wx.hideLoading();
         console.error('发起拼团失败:', err);
         wx.showToast({
             title: '网络错误',
             icon: 'none'
         });
     });
 }



});